'''
Created on 29/09/2014

@author: David
'''
from Sodev.memory import Memory
from Sodev.asignacionContinua import AsignacionContinua
from Sodev.paginacion import Paginacion

class Memoryadmin:
    def __init__(self):
        self.indexOffreeMem=0
        self.memory = Memory()
        self.assignationModule = None
        self.hdd = None
    ''' arreglar, dividir la resposablilidad de saber los index, si se
        cambia, cambiar la def "run" de kernel, para que se adapte (deprecated)'''
        
    def setAsignacionContinua(self, compacter, pedido):
        self.assignationModule = AsignacionContinua(self.memory, compacter, pedido)
    
    def setPaginacion(self,hdd):
        self.hdd = hdd
        self.assignationModule = Paginacion(self.memory, self.hdd)
    
    def writeInstrs(self,listainstr):
        firstindex = self.indexOffreeMem
        self.assignationModule.write(listainstr)
        self.indexOffreeMem = self.memory.getlastindexused()
        return [firstindex, self.indexOffreeMem]
    
    def writeProgram(self,progData,pid):
        self.assignationModule.write(progData,pid)
    
    def read(self,pc,pid):
        return self.assignationModule.read(pc,pid)
        
    def liberarMemoria(self, pcb):
        self.assignationModule.liberarMemoria(pcb)
            